package com.srx.openfeign.feign;

import com.srx.openfeign.dto.NoticeDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

/**
 * 宿舍与Elasticsearch服务之间的Feign接口
 * @author srx
 */
@FeignClient("elasticsearch-service")
public interface DormitoryToElasticsearch
{

    /**
     * 获取所有宿舍公告信息数量
     * @return 公告数量
     */
    @GetMapping("/elasticsearch/dormitory/notice-count")
    long getAllDormitoryNoticesCount();


    /**
     * 根据搜索词获取宿舍公告数量
     * @param searchTerm 搜索词
     * @return 公告数量
     */
    @GetMapping("/elasticsearch/dormitory/search-notice-count/{searchTerm}")
    long getSearchDormitoryNoticeCount(@PathVariable("searchTerm") String searchTerm);

	/**
     * 根据搜索词获取指定搜索词宿舍公告列表
     * @param page 页码
     * @param size 每页数量
     * @param searchTerm 搜索词
     * @return 宿舍公告列表
     */
    @GetMapping("/elasticsearch/dormitory/search-notice/{page}/{size}/{searchTerm}")
    List<NoticeDTO> getSearchDormitoryNoticeByPage(@PathVariable("page") int page, @PathVariable("size") int size, @PathVariable("searchTerm") String searchTerm);

    /**
     * 获取所有待删除的宿舍公告ID列表
     * @return 所有待删除的图书馆公告ID列表
     */
    @GetMapping("/elasticsearch/dormitory/delete-notice-id")
    List<Integer> getDeleteDormitoryNoticeIdList();

	/**
     * 根据用户ID获取宿舍ID
     * @param userId 用户ID
     * @return 宿舍ID
     */
	@GetMapping("/elasticsearch/dormitory/dormitory-id/{userId}")
	int getDormitoryIdByUserId(@PathVariable("userId") int userId);
}
